#pragma once

#include <stdio.h>
#include <assert.h>
#include<stdlib.h>

typedef int LTDataType;

typedef struct ListNode {
	struct ListNode* prev;
	struct ListNode* next;
	LTDataType val;
}ListNode;

void ListInit(ListNode** pphead);
void ListDestory(ListNode** pphead);
void ListPushFront(ListNode* phead, LTDataType val);
void ListPushBack(ListNode* phead, LTDataType val);
void ListInsert(LTDataType val, ListNode* pos);

void ListPopFront(ListNode* phead);
void ListPopBack(ListNode* phead);
void ListErase(ListNode* pos);

ListNode* ListFind(ListNode* phead, LTDataType val);
void ListPrint(ListNode* phead);
bool ListEmpty(ListNode* phead);
size_t ListSize(ListNode* phead);
ListNode* BuyNode(LTDataType val);

